Predanie retazca do visual basicu
Otázka od: preas_w
3. 9. 2002 10:59
Ahoj,
neviem si rady. Mam dll kniznicu a z nej potrebujem ako navratovu hodnotu
vratit do programu napisnom vo visual basicu cestu k suboru - retazec.
Skusal som to s pouzitim sharemem a borlndmm.dll, potom som skusil nadefinovat
pole znakov, dat tam retazec a vratit to ako pchar, neslo tak som skusil
variant marne.
Okrem toho pchar mi to vzdy vyhladsi chybu ze preogram pise do pameti kde nema
a krachne cela aplikacia.
PChar mi neustale vracia prazdnu hodnotu.
Nestretol sa niekto s podobnym problemom?
Diky
miro
Odpovedá: Marek Čížek
3. 9. 2002 11:42
budto buffer alokujes v basicu pomoci funkci api,
do fce z dll predas ukazatel na tento buffer a do nej
nakopirujes retezec, nebo si z basicu posles handle
do aplikace a retezec posilas jako parametry
funkce SendMessage. Model volani je tusim
u obou jazyku stdcall, takze ho menit nemusis.
Marek
----- Original Message -----
Ahoj,
neviem si rady. Mam dll kniznicu a z nej potrebujem ako navratovu hodnotu
vratit do programu napisnom vo visual basicu cestu k suboru - retazec.
Skusal som to s pouzitim sharemem a borlndmm.dll, potom som skusil
nadefinovat pole znakov, dat tam retazec a vratit to ako pchar, neslo tak
som skusil variant marne.
Okrem toho pchar mi to vzdy vyhladsi chybu ze preogram pise do pameti kde
nema a krachne cela aplikacia.
PChar mi neustale vracia prazdnu hodnotu.
Nestretol sa niekto s podobnym problemom?
Diky
miro
Odpovedá: Pavel Gazda
3. 9. 2002 12:45
Ahoj,
podobny problem jsem resil ( ne do basicu).
Asi nejlepsi reseni je asi toto: ve volajici aplikaci nadefinovat buffer a
predat adresu na tento buffer a jeho velikost do dll, v dll pak naplnit tento
buffer.
Pavel
> neviem si rady. Mam dll kniznicu a z nej potrebujem ako navratovu hodnotu
vratit do programu napisnom vo > visual basicu cestu k suboru - retazec.
Odpovedá: miro mrazik
3. 9. 2002 18:02
Ahoj,
> funkce SendMessage. Model volani je tusim
> u obou jazyku stdcall, takze ho menit nemusis.
Ako odchytim tu message vo VB?. Mozes mi poslat priklad?
Diky miro
Odpovedá: miro mrazik
3. 9. 2002 22:48
Ahoj,
problem bol nakoniec v tom, ze vo VB sa musi retazec, ktory sa predava do
delphi najprv naplnit nejakou hodnotou aj prazdnou potom to ide bez
problemov.
Zrejme ho VB vytvori az vo chvili ked sa mu priradi hodnota.
miro
Odpovedá: Erik Salaj
5. 9. 2002 0:13
> neviem si rady. Mam dll kniznicu a z nej potrebujem ako navratovu hodnotu
> vratit do programu napisnom vo visual basicu cestu k suboru - retazec.
najjednoduchsim riesenim by mohlo byt pouzitie OleVariant premennej:
--------------------------------------------------------- DLL
library Test;
{$R *.RES}
function MyFunc: OleVariant; stdcall;
begin
Result := 'Hello, world';
end;
exports
MyFunc;
begin
end.
--------------------------------------------------------- VBasic
Private Declare Function MyFunc Lib "test" () As Variant
Private Sub Command1_Click()
MsgBox MyFunc()
End Sub
---------------------------------------------------------
Erik